﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OWLServerQL.dominio
{
    /// <summary>
    /// Error que puede generar el compilador de la consulta
    /// </summary>
    public class ErrorOwlServerLQ
    {
        // Constantes
        private const int NO_HAY = -1;

        private string mensaje;
        private int linea;
        private int columna;

        /// <summary>
        /// Linea donde se produce el error
        /// </summary>
        public int Linea
        {
            get { return linea; }
            set { linea = value; }
        }

        /// <summary>
        /// Columna donde se produce el error
        /// </summary>
        public int Columna
        {
            get { return columna; }
            set { columna = value; }
        }

        /// <summary>
        /// Mensaje de error.
        /// </summary>
        public string Mensaje
        {
            get { return mensaje; }
            set { mensaje = value; }
        }

        public ErrorOwlServerLQ (string mensaje, int linea, int columna)
        {
            this.columna = columna;
            this.mensaje = mensaje;
            this.linea = linea;
        }

        public ErrorOwlServerLQ(string mensaje)
        {
            this.columna = NO_HAY;
            this.mensaje = mensaje;
            this.linea = NO_HAY;
        }

        override public String ToString()
        {
            StringBuilder resultado = new StringBuilder();

            if (linea != NO_HAY)
            {
                resultado.Append("Linea ");
                resultado.Append(this.linea);
            }

            if (columna != NO_HAY)
            {
                resultado.Append(":");
                resultado.Append(this.columna);
            }

            resultado.Append(" ");
            resultado.Append(this.mensaje);

            return resultado.ToString().Trim();
        }
    }
}
